package w83b.w83bOperacionesPaso.w83bMantenimientos.w83bPlantillas;

import java.io.InputStream;
import java.sql.Blob;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import w83b.w83bBeans.W83bPlantillasBean;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83bTablaConveniosOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83bTablaPlantillasRtfAction extends Q70ActionPasoOP{


	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

 		W83bPlantillasBean plantillaBean = null;
		String modoP = (String) contexto.get("modoPantalla");
		if(modoP.equalsIgnoreCase(W83bClsConstantes.MODO_EDICION)){
			plantillaBean = (W83bPlantillasBean) contexto.get("w83bPlantillasNuevoBean");
		}else{
			plantillaBean = (W83bPlantillasBean) contexto.get("w83bPlantillasNuevoTempBean");
		}
		
		//obtenemos el nombre de la plantilla, que usaremos como nombre del fichero
		String nombre = plantillaBean.getNombrePlantilla();
		//obtenemos el fichero guardado en el bean
		Blob fichero = plantillaBean.getFicheroRecibido();
		
//SI SE HA SUBIDO PREVIAMENTE UNA PLANTILLA
		if(fichero!=null){
			//creamos el objeto out
			ServletOutputStream out = response.getOutputStream();
			//convertimos el fichero en un InputStream
			InputStream inStream = fichero.getBinaryStream();
			 //establecemos las propiedades del rtf
	        response.setContentType("application/octet-stream");
	        response.setHeader("Content-Disposition","attachment;filename="+nombre);
	        //rellenamos
	        byte[] outputByte = new byte[4096];
	        while(inStream.read(outputByte, 0, 4096) != -1){
	        	out.write(outputByte, 0, 4096);
	        }
	        //cerramos el objeto
	        inStream.close();
	        out.flush();
	        out.close();
		}else{
//SI NO EXISTE PLANTILLA
			if(modoP.equalsIgnoreCase(W83bClsConstantes.MODO_EDICION)){
				return mapping.findForward("errorE");
			}else{
				return mapping.findForward("errorB");
			}
		}
		return null;
	}

}
